<?php 
/**
 * 测试文件是否可写
 * @param unknown $d
 * @return boolean
 */
function sp_testwrite($d) {
	$tfile = "_test.txt";
	$fp = @fopen($d . "/" . $tfile, "w");
	if (!$fp) {
		return false;
	}
	fclose($fp);
	$rs = @unlink($d . "/" . $tfile);
	if ($rs) {
		return true;
	}
	return false;
}

/**
 * 创建路径文件夹
 * @param unknown $path
 * @param number $mode
 * @return boolean
 */
function sp_dir_create($path, $mode = 0777) {
	if (is_dir($path))
		return true;
	$ftp_enable = 0;
	$path = sp_dir_path($path);
	$temp = explode('/', $path);
	$cur_dir = '';
	$max = count($temp) - 1;
	for ($i = 0; $i < $max; $i++) {
		$cur_dir .= $temp[$i] . '/';
		if (@is_dir($cur_dir))
			continue;
		@mkdir($cur_dir, 0777, true);
		@chmod($cur_dir, 0777);
	}
	return is_dir($path);
}

/**
 * 转化路径
 * @param unknown $path
 * @return Ambigous <string, mixed>
 */
function sp_dir_path($path) {
	$path = str_replace('\\', '/', $path);
	if (substr($path, -1) != '/')
		$path = $path . '/';
	return $path;
}

/**
 * 执行sql文件
 * @param unknown $db
 * @param unknown $file
 * @param unknown $tablepre
 */
function sp_execute_sql($db,$file,$tablepre){
	//读取SQL文件
	$sql = file_get_contents($file);
	$sql = str_replace("\r", "\n", $sql);
	$sql = explode(";\n", $sql);
	//替换表前缀
	$default_tablepre = "mini_";
	$sql = str_replace(" `{$default_tablepre}", " `{$tablepre}", $sql);
	
	//开始安装
	sp_show_msg('开始安装数据库...');
	foreach ($sql as $item) {
		$item = trim($item);
		if(empty($item)) continue;
		preg_match('/CREATE TABLE `([^ ]*)`/', $item, $matches);
		if($matches) {
			$table_name = $matches[1];
			$msg  = "创建数据表{$table_name}";
			if(false !== $db->execute($item)){
				sp_show_msg($msg . ' 完成');
			} else {
				sp_show_msg($msg . ' 失败！', 'error');
			}
		} else {
			$db->execute($item);
		}

	}
}

/**
 * 显示提示信息
 * @param  string $msg 提示信息
 */
function sp_show_msg($msg, $class = ''){
	echo "<script type=\"text/javascript\">showmsg(\"{$msg}\", \"{$class}\")</script>";
	flush();
	ob_flush();
}


